#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <limits.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <signal.h>
#include <sys/types.h>
#include <fcntl.h>
void handler(int sig)
{
  printf("sig=%d\n", sig);
}
int main()
{
  // FILE *finput, *foutput;
  // char buffer[4096];
  // int n;
  // finput = popen("echo test", "r");               // 将echo test 的命令的输出与读端相连
  // foutput = popen("cat", "w");                    // 将cat命令的输入与写端相连
  // read(fileno(finput), buffer, strlen("test"));   // 将echo test的输出结果到buf
  // write(fileno(foutput), buffer, strlen("test")); // 将管道内容读出作为cat输入
  // pclose(finput);
  // pclose(foutput);
  // printf("\n");
  // exit(EXIT_SUCCESS);
  int j;
  signal(SIGPIPE, handler);
  unlink("FIFO");
  mkfifo("FIFO", 0644);
  __pid_t pid;
  pid = fork();
  if (pid == 0)
  {
    int fd;
    fd = open("FIFO", O_RDONLY);
    close(fd);
  }
  else
  {
    int fd;
    fd = open("FIFO", O_WRONLY);
    int ret;
    sleep(1);
    ret = write(fd, "helloworld", 10);
    printf("ret=%d\n", ret);
  }
}